package com.demo.java.OD51_100.OD56;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【开放日活动】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145600137
 */
public class OdMain {
    // 计算桶内球数的总和
    private static int getTotalNum(int[] balls) {
        int totalResult = 0;
        for (int b : balls) {
            totalResult += b;
        }
        return totalResult;
    }

    public static void main(String[] args) {
        try {
            Scanner s = new Scanner(System.in);
            int sum = s.nextInt();  // 总容量
            int nums = s.nextInt();  // 桶的数量
            int[] myBalls = new int[nums];

            // 读取每个桶的球数量
            for (int i = 0; i < nums; ++i) {
                myBalls[i] = s.nextInt();
            }

            int total = getTotalNum(myBalls);  // 计算所有桶的总球数
            if (sum >= total) {
                System.out.println("[]");  // 如果总容量大于等于所有球的总数，直接输出空数组
                return;
            }

            int[] tmps = new int[myBalls.length];
            int[] subs = new int[myBalls.length];
            // 从容量 sum 开始，逐渐缩小，找到合适的桶组合
            for (int i = sum; true; --i) {
                for (int k = 0; k < myBalls.length; ++k) {
                    if (i > myBalls[k]) {
                        subs[k] = 0;
                        tmps[k] = myBalls[k];
                    } else {
                        subs[k] = myBalls[k] - i;
                        tmps[k] = i;
                    }
                }
                // 如果当前选择的桶的球数总和小于等于 sum，则输出
                if (sum >= getTotalNum(tmps)) {
                    System.out.println(Arrays.toString(subs).replaceAll(" ", ""));
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}